import com.itextpdf.text.Document;
import com.itextpdf.text.pdf.AcroFields;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfStamper;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;

import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;

/**
 * 测试类
 */
@Slf4j
public class test {

    @Test
    public void test() throws Exception {
        String filePath = "C:\\Users\\用小米不给钱\\Desktop\\pdf模板\\成长档案-课堂评价模版.pdf";
        PdfReader reader = new PdfReader(filePath);
        PdfStamper stamper = new PdfStamper(reader, Files.newOutputStream(Paths.get("C:\\Users\\用小米不给钱\\Desktop\\pdf模板\\成长档案-课堂评价模版123.pdf")));
        //使用中文字体
        BaseFont bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
        ArrayList<BaseFont> fontList = new ArrayList<>();
        fontList.add(bf);

        AcroFields acroFields = stamper.getAcroFields();
        acroFields.setSubstitutionFonts(fontList);

        //设置字段
        acroFields.setField("name", "测试姓名");
        acroFields.setField("startTime", "2023-12-08");
        stamper.setFormFlattening(true);
        stamper.close();
    }

    @Test
    public void test1(){
        try { // 打开现有的PDF文件
            PdfReader reader = new PdfReader("C:\\Users\\用小米不给钱\\Desktop\\pdf模板\\成长档案-课堂评价模版.pdf");
            // 创建一个输出流，用于保存修改后的PDF文件
            FileOutputStream output = new FileOutputStream("C:\\Users\\用小米不给钱\\Desktop\\pdf模板\\成长档案-课堂评价模版123456.pdf");
            // 创建一个PDF文档对象
            Document document = new Document();
            // 创建一个PDF拼写器
            PdfStamper stamper = new PdfStamper(reader, output);
            // 获取PDF表单字段
            AcroFields form = stamper.getAcroFields();
            // 替换指定字段的内容
            form.setField("field1", "替换后的内容1");
            form.setField("field2", "替换后的内容2");
            // 关闭拼写器和输出流
            stamper.close();
            output.close();
            System.out.println("内容已成功替换并保存到PDF文件中。");
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}
